package com.doc.test;

import com.google.zxing.WriterException;

import java.io.File;
import java.io.IOException;
import java.net.InetAddress;

/**
 * @author Administrator
 * 
 */
public class Qrest {

	/**
	 * @param path
	 *            创建地址
	 * @param fileName
	 *            创建文件名
	 * @param type
	 *            创建类型
	 * @return
	 */
	public static boolean createFile(String path, String fileName, String type) {
		String filenameTemp;
		Boolean bool = false;
		filenameTemp = path + "\\" + fileName + "." + type;
		File file = new File(filenameTemp);
		try {
			if (!file.exists()) {
				file.createNewFile();
				bool = true;
				System.out.println("success create file,the file is "
						+ filenameTemp);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return bool;
	}

	public class Threr extends Thread{
		String con = null;
		String ret = null;
		public Threr(String con) {
			this.con = con;
		}
		@Override
		public void run() {
			super.run();
			ret = Qrest.createerweima(con);
		}
		public String getcon(){
			return ret;
		}
	}
	
	public static String createerweima(String content) {
		File directory = new File("");
		String thisfile;
		String addr = null;
		try {
			thisfile = directory.getCanonicalPath();
			DeleteFileUtil.deleteFile(thisfile + "\\erweima.jpg");
			Qrest.createFile(thisfile, "erweima", "jpg");
			String logUri = thisfile + "\\erweima.jpg";
			String outFileUri = logUri;
			int[] size = new int[] { 430, 430 };
			String format = "jpg";
			addr = InetAddress.getLocalHost().getHostAddress();
			try {
				new QRCodeFactory().CreatQrImage(content, format, outFileUri,
						logUri, size);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (WriterException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		System.out.println(addr);
		return "http://"+addr + "/erweima.jpg";
	}

	/*
	 * 【快速排序】
	 * 基本思想：选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描，将待排序列分成两部分,
	 * 一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。
	 */
	public void quickSort(int[] arr) {
		// 查看数组是否为空
		if (arr.length > 0) {
			quickSort(arr, 0, arr.length - 1);
		}
	}

	private void quickSort(int[] arr, int low, int high) {
		if (low < high) {
			int middle = getMiddle(arr, low, high); // 将list数组进行一分为二
			quickSort(arr, low, middle - 1); // 对低字表进行递归排序
			quickSort(arr, middle + 1, high); // 对高字表进行递归排序
		}
	}

	private int getMiddle(int[] arr, int low, int high) {
		int temp = arr[low]; // 数组的第一个作为中轴
		while (low < high) {
			while (low < high && arr[high] >= temp) {
				high--;
			}
			arr[low] = arr[high]; // 比中轴小的记录移到低端
			while (low < high && arr[low] <= temp) {
				low++;
			}
			arr[high] = arr[low]; // 比中轴大的记录移到高端
		}
		arr[low] = temp; // 中轴记录到尾
		return low; // 返回中轴的位置

	}

	/*
	 * 【插入排序】
	 * 基本思想： 在要排序的一组数中，假设前面(n-1) [n>=2] 个数已经是排好顺序的，
	 * 现在要把第n个数插到前面的有序数中，使得这n个数也是排好顺序的， 如此反复循环，直到全部排好顺序。
	 */
	public void insertSort(int[] arr) {
		for (int i = 1; i < arr.length; i++) {
			int j = i - 1;
			int temp = arr[i];
			for (; j >= 0 && temp < arr[j]; j--) {
				arr[j + 1] = arr[j]; // 将大于temp的值整体后移一个单位
			}
			arr[j + 1] = temp;
		}
	}
	public void printArray(int[] arr) {
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
	}

	public static void main(String[] args) throws IOException {
		int[] a = {321,332,113,221,422,21};

		Qrest q = new Qrest();
		q.printArray(a);
		System.out.println("");
		q.quickSort(a);
		q.printArray(a);
//
//		String content = "dsad";
//		File directory = new File("");
//		String thisfile = directory.getCanonicalPath();
//		DeleteFileUtil.deleteFile(thisfile + "\\erweima.jpg");
//		Qrest.createFile(thisfile, "erweima", "jpg");
//		String logUri = thisfile + "\\erweima.jpg";
//		String outFileUri = logUri;
//		int[] size = new int[] { 430, 430 };
//		String format = "jpg";
//		try {
//			new QRCodeFactory().CreatQrImage(content, format, outFileUri,
//					logUri, size);
//		} catch (IOException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		} catch (WriterException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
		//System.out.println(Qrest.createerweima("dsadsa"));
	}

}
